package com.xxxx;

import com.baomidou.mybatisplus.generator.ConfigGenerator;
import com.baomidou.mybatisplus.annotations.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;

public class AutoGeneratorCode{
	
	protected static ConfigGenerator getConfigGenerator() {
		ConfigGenerator cg = new ConfigGenerator();
		cg.setEntityPackage("com.baomidou.entity");// entity 实体包路径
		cg.setMapperPackage("com.baomidou.mapper");// mapper 映射文件路径
		cg.setServicePackage("com.baomidou.service");// service 层路径
		//cg.setXmlPackage("com.baomidou.mapper.xml");// xml层路径（可以不写）
		//cg.setServiceImplPackage("com.baomidou.service.impl");// serviceimpl层路径（可以不写）

		/* 此处可以配置，自定义 service 及 serviceImpl 子类路径 */
		//cg.setSuperService("com.xxx.service.IBaseService");
		//cg.setSuperServiceImpl("com.xxx.service.impl.BaseServiceImpl");

		/* 此处设置 String 类型数据库ID，默认Long类型 */
		// cg.setConfigIdType(ConfigIdType.STRING);

		/*
		 * 生成文件保存位置
		 */
		cg.setSaveDir("D:/mybatis-plus/");

		/*
		 * 【实体】是否生成字段常量（默认 false）<br>
		 * -----------------------------------<br>
		 * public static final String ID = "test_id";
		 */
		//cg.setColumnConstant(false);

		/*
		 * 【实体】是否为构建者模型（默认 false）<br>
		 * -----------------------------------<br>
		 * 	public User setName(String name) {
		 * 		this.name = name;
		 * 		return this;
		 * 	}
		 */
		//cg.setBuliderModel(false);

		/*
		 * <p>
		 * true 表示数据库设置全局下划线命名规则，默认 false
		 * -------------------------------------------------------<br>
		 *【 开启该设置实体可无 @TableId(value = "test_id") 字段映射，启动配置对应也要开启 true 设置 】<br>
		 * </p>
		 */
		//cg.setDbColumnUnderline(false);

		/*
		 * 表是否包括前缀 <p> 例如 mp_user 生成实体类 false 为 MpUser , true 为 User </p>
		 */
		cg.setDbPrefix(false);

		/*
		 * 默认值为true , 是否覆盖当前路径下已有文件
		 */
		//cg.setFileOverride(true);

		/*
		 * 自定义类名，需要包含 %s 格式化会填充实体beanName
		 */
//		 cg.setMapperName("Test%sDao");
//		 cg.setMapperXMLName("Test%sMapper");
//		 cg.setServiceName("Test%sSer");
//		 cg.setServiceImplName("%sSerImpl");
		
		/**
		 * 自定义 BaseEntity
		 */
//		ConfigBaseEntity cbe = new ConfigBaseEntity();
//		cbe.setColumns(new String[]{"test_id", "age", "createTime"});
//		cg.setConfigBaseEntity(cbe);
		return cg;
	}
	
	
	
    public static void main(String[] args) {
        ConfigGenerator cg = new ConfigGenerator();

        // 配置 MySQL 连接
        cg.setDbDriverName("com.mysql.jdbc.Driver");
        cg.setDbUser("root");
        cg.setDbPassword("root");
        cg.setDbUrl("jdbc:mysql://127.0.0.1:3306/springwind?characterEncoding=utf8");

        /*
		 * 表主键 ID 生成类型, 自增该设置无效。
		 * <p>
		 * IdType.AUTO 			数据库ID自增
		 * IdType.INPUT			用户输入ID
		 * IdType.ID_WORKER		全局唯一ID，内容为空自动填充（默认配置）
		 * IdType.UUID			全局唯一ID，内容为空自动填充
		 * </p>
		 */
		cg.setIdType(IdType.AUTO);
		
        // 配置包名
        cg.setEntityPackage("com.xxxx.entity");
        cg.setMapperPackage("com.xxxx.mapper");
        cg.setServicePackage("com.xxxx.service");
        //cg.setXmlPackage("com.xxxx.mapper.xml");
        //cg.setServiceImplPackage("com.xxxx.service.impl");

        // 配置保存路径
        cg.setSaveDir("C:\\Users\\lenovo\\git\\spring-boot-traning\\spring-boot-training\\src\\test\\java");

        
        // 其他参数请根据上面的参数说明自行配置，当所有配置完善后，运行AutoGenerator.run()方法生成Code
        // 生成代码
        AutoGenerator.run(cg);
        
        
        
        
        
        
        
        
        
        
        
        
        
    }
}